﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Collections;
using Ucb.Workshop.Business;
using Ucb.Workshop.Business.Util;
using Ucb.Workshop.Presenters;

namespace Ucb.Workshop.WinApp.View.GestionVentas
{
    public partial class ControlRegistroVenta : UserControl, IVentaView
    {
        string[] valores;
        float total = 0;
        private RegistroVentaPresenter presenter;

        public string[] Valores
        {
            get { return valores; }
            set { valores = value; }
        }

        public ControlRegistroVenta()
        {
            InitializeComponent();
            gridVenta.Columns.Add("COD_PROVEE", "cod_provee");//0
            gridVenta.Columns.Add("PRODUCTO", "Producto");//1
            gridVenta.Columns.Add("MARCA", "Marca");//2
            gridVenta.Columns.Add("PRECIO", "Precio");//3
            gridVenta.Columns.Add("PROVEEDOR", "Proveedor");//4
            gridVenta.Columns.Add("CANTIDAD", "Cantidad");//5
            gridVenta.Columns.Add("TOTAL", "Total");//6

            gridVenta.Columns[0].Visible = false;
            comboBoxTipoVenta.SelectedIndex = 0;
            //if (comboBoxTipoVenta.Items.Count > 0)
            //{
            //    comboBoxTipoVenta.SelectedIndex = 2;
            //}
            presenter = new RegistroVentaPresenter(this);

        }

        private void button2_Click(object sender, EventArgs e)
        {
            SeleccionarProducto sel = new SeleccionarProducto(this);
            sel.ShowDialog();
        }

        public void addProducto()
        {
            string[] fila = { valores[0], valores[1], valores[2], valores[3], valores[4], valores[5], (float.Parse(valores[3]) * float.Parse(valores[5])).ToString() };
            gridVenta.Rows.Add(fila);
            total += (float.Parse(valores[3]) * float.Parse(valores[5]));
            txtTotal.Text = total.ToString();
        }

        private void button1_Click(object sender, EventArgs e)//registrar
        {
            if (UtilControl.ValidarTextBox(txtCliente) && UtilControl.ValidarTextBox(txtNit))
            {
                if (gridVenta.Rows.Count > 0)
                {

                    presenter.OnRegistroVenta(listaDetalleVenta());

                    gridVenta.Rows.Clear();
                    total = 0;
                    txtTotal.Text = "";
                    txtCliente.Text = "";
                    txtNit.Text = "";
                }
                else
                    MessageBox.Show("No ingreso ningun producto para vender");
            }
            else
                MessageBox.Show("Debe ingresar los datos del cliente");

        }

        public ArrayList listaDetalleVenta()
        {
            ArrayList lista = new ArrayList();
            for (int i = 0; i < (gridVenta.RowCount) - 1; i++)
            {
                DetalleVenta detalle_venta = new DetalleVenta();
                detalle_venta.CodProvee = int.Parse(datoGrid(i, 0));
                detalle_venta.Cantidad = int.Parse(datoGrid(i, 5));
                lista.Add(detalle_venta);
            }

            return lista;
        }

        public string datoGrid(int fila, int columna)
        {
            return gridVenta.Rows[fila].Cells[columna].Value.ToString();
        }

        private void txtNit_TextChanged(object sender, EventArgs e)
        {
            UtilControl.EsEntero(txtNit);
        }

        private void button2_Click_1(object sender, EventArgs e)
        {
            SeleccionarProducto sel = new SeleccionarProducto(this);
            sel.ShowDialog();
        }

        #region IVentaView Members

        public string Cliente
        {
            get { return txtCliente.Text; }
        }

        public string NIT
        {
            get { return txtNit.Text; }
        }

        public string EstadoVenta
        {
            get { return comboBoxTipoVenta.Text; }
        }

        public string Total
        {
            get { return txtTotal.Text; }
        }

        private void txtNit_TextChanged_1(object sender, EventArgs e)
        {
            UtilControl.EsEntero(this.txtNit);
        }

        //public List<Detalle_venta> ListaDeDetalles
        //{
        //    get {

                
        //        return listaDeDetalles;
        //    }
        //}

        #endregion
    }
}
